Completed
Push — master ( e65836...fa4d5c )
by Mathieu
12s queued 10s
created

GetTaskAction.index   A

Complexity

Conditions 2

Size

Total Lines 9
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 9
dl 0
loc 9
rs 9.95
c 0
b 0
f 0
1
import {
2
  Controller,
3
  Inject,
4
  UseGuards,
5
  Get,
6
  Param,
7
  NotFoundException
8
} from '@nestjs/common';
9
import {AuthGuard} from '@nestjs/passport';
10
import {ApiTags, ApiBearerAuth, ApiOperation} from '@nestjs/swagger';
11
import {TaskView} from 'src/Application/Task/View/TaskView';
12
import {GetTaskByIdQuery} from 'src/Application/Task/Query/GetTaskByIdQuery';
13
import {IQueryBus} from 'src/Application/IQueryBus';
14
import {IdDTO} from 'src/Infrastructure/Common/DTO/IdDTO';
15
import {Roles} from 'src/Infrastructure/HumanResource/User/Decorator/Roles';
16
import {RolesGuard} from 'src/Infrastructure/HumanResource/User/Security/RolesGuard';
17
import {UserRole} from 'src/Domain/HumanResource/User/User.entity';
18
19
@Controller('tasks')
20
@ApiTags('Task')
21
@ApiBearerAuth()
22
@UseGuards(AuthGuard('bearer'), RolesGuard)
23
export class GetTaskAction {
24
  constructor(
25
    @Inject('IQueryBus')
26
    private readonly queryBus: IQueryBus
27
  ) {}
28
29
  @Get(':id')
30
  @Roles(UserRole.COOPERATOR, UserRole.EMPLOYEE)
31
  @ApiOperation({summary: 'Get task'})
32
  public async index(@Param() dto: IdDTO): Promise<TaskView> {
33
    try {
34
      return await this.queryBus.execute(new GetTaskByIdQuery(dto.id));
35
    } catch (e) {
36
      throw new NotFoundException(e.message);
37
    }
38
  }
39
}
40